iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0

在說第二天分頁的從無到有的版本前,先認識一下資料庫使用的CRUD

就是網站https://laihao2.com/

作品列表新增:這裡就是資料庫使用的CRUD
裡面的新增和查詢,再加上下載檔案
https://ithelp.ithome.com.tw/upload/images/20240913/20119035hyKMjXPkCz.png
在這裡練習的MVC從資料庫開始~整個走完
ASP.NET開發操作流程:資料表設定好>再寫程式:加入資料庫>串聯資料庫>產生Models裡面類別檔dao>按:建置>Controllers裡面的Entities>產生畫面View

資料表的SQL

USE [ProductDB]
GO

/****** Object:  Table [dbo].[Product]    Script Date: 2024/9/11 下午 10:18:29 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Product](
	[編號] [nvarchar](50) NOT NULL,
	[品名] [nvarchar](50) NULL,
	[單價] [int] NULL,
	[備註] [nvarchar](50) NULL,
	[單據編號] [nvarchar](50) NULL,
	[data] [datetime] NULL,
 CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED 
(
	[編號] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO



建立後的樣子
https://ithelp.ithome.com.tw/upload/images/20240913/20119035C0CihmWxPn.png
目前裡面有填的資料
https://ithelp.ithome.com.tw/upload/images/20240913/20119035TzpDTICUlp.png

再寫程式:加入資料庫>串聯資料庫>產生Models裡面類別檔dao>
到專案建完MVC之後的檔案顯示
https://ithelp.ithome.com.tw/upload/images/20240913/20119035FTSTPZ3XtX.png
Models選加入,然後選>新增項目
https://ithelp.ithome.com.tw/upload/images/20240913/20119035dXWr6yJSXS.png

新增項目 選資料,再選 ADO.NET實體資料模型
https://ithelp.ithome.com.tw/upload/images/20240913/20119035fvWOBaoOs6.png
選第四個 來自資料庫的Code First選這個之後資料表有新增欄位才可以單獨新增
https://ithelp.ithome.com.tw/upload/images/20240913/2011903575UOlul5oT.png

跟本機資料庫連接,如果是在公司有時候無法連也是因為權限不足要請MIS設定
https://ithelp.ithome.com.tw/upload/images/20240913/201190355RdRsw8xKG.png
測試資料庫是否有連線成功
https://ithelp.ithome.com.tw/upload/images/20240913/20119035ZG8SSX2dea.png
選擇資料表
https://ithelp.ithome.com.tw/upload/images/20240913/20119035x8sovCZhfD.png
回到Model查看,就自動新增,兩個檔案
https://ithelp.ithome.com.tw/upload/images/20240913/20119035cHvya5j95u.png
對照ASP.NET開發操作流程:資料表設定好>再寫程式:加入資料庫>串聯資料庫>產生Models裡面類別檔dao>按:建置>Controllers裡面的Entities>產生畫面View

就是產生Models裡面類別檔dao

看到最下面的Web.config
填入跟本機資料庫的帳密連線
https://ithelp.ithome.com.tw/upload/images/20240913/201190356eVQ5ctIcz.png

<add name=“ProductDBContext” connectionString=“data source=127.0.0.1;initial catalog=ProductDB;user id=帳號;password=密碼;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

ASP.NET開發操作流程:資料表設定好>再寫程式:加入資料庫>串聯資料庫>產生Models裡面類別檔dao>按:建置>Controllers裡面的Entities>產生畫面View

按:建置>
https://ithelp.ithome.com.tw/upload/images/20240913/201190356Km1ioKPFG.png
Controllers裡面的Entities>

程式碼

ProductDBContext _db = new ProductDBContext();
public ActionResult Index()
        {
            var products = _db.Products.ToList();
            return View(products);
        }

解釋程式碼
這段代碼是一個用於 ASP.NET MVC 框架的控制器操作方法,功能是在視圖中顯示產品列表。具體解釋如下:

  1. ProductDBContext _db = new ProductDBContext();:

    • 這行代碼創建了一個數據庫上下文對象 _db,用於與數據庫交互。ProductDBContext 是繼承自 DbContext 的類,代表與 Products 表相關的數據庫操作。
  2. public ActionResult Index():

    • 這是一個控制器中的動作方法,名為 Index。它會處理用戶請求,並返回一個視圖(頁面)。
    • ActionResult 是返回類型,表示該方法可以返回不同的結果類型,比如視圖、重定向或 JSON 數據。
  3. var products = _db.Products.ToList();:

    • 從數據庫中獲取 Products 表的所有產品記錄,並將它們存儲在變量 products 中。
    • ToList() 方法將查詢結果轉換為列表形式。
  4. return View(products);:

    • 將產品列表 products 傳遞給視圖(前端頁面),用於在頁面中顯示產品數據。

總結來說,這個方法從數據庫中讀取所有產品,並將它們傳遞給視圖,通常對應的是一個顯示產品列表的頁面。

產生畫面View
https://ithelp.ithome.com.tw/upload/images/20240913/20119035vwNpDiSwZf.png
下一步
https://ithelp.ithome.com.tw/upload/images/20240913/20119035Gy8hsphEvk.png
下一步
https://ithelp.ithome.com.tw/upload/images/20240913/20119035XFHJXgtfYc.png

產生簡單版的程式碼
https://ithelp.ithome.com.tw/upload/images/20240913/201190358pEuBCgz2E.png
修改成自己要的

@model IEnumerable<WebApplication5.Models.Product>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<p>
    @Html.ActionLink("下載範本", "DownloadTemplate", "Home")
</p>
<h3>使用SOP</h3>
<ol>
    <li>
        按"下載範本"右上顯示下載
    </li>
    <li>
        開啟檔案
    </li>
    <li>
        word上方工作列選"郵件"
    </li>
    <li>
        工作列選"郵件"看"預覽結果"
    </li>
    <li>
        "預覽結果"依序選擇
    </li>
    <li> 列印word
    </li>
</ol>
        <table class="table">
            <tr>
                <th>
                    序號
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.編號)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.品名)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.單價)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.備註)
                </th>
                <th></th>
            </tr>
            @{
                int counter = 1;
            }
            @foreach (var item in Model)
            {
                <tr>
                    <td>@(counter++)</td>
                    <td>
                        @Html.DisplayFor(modelItem => item.編號)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.品名)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.單價)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.備註)
                    </td>
                    @*
                    <td>
                        @Html.ActionLink("Edit", "Edit", new { id = item.編號 }) |
                        @Html.ActionLink("Details", "Details", new { id = item.編號 }) |
                        @Html.ActionLink("Delete", "Delete", new { id = item.編號 })
                    </td>*@
                </tr>
            }

        </table>

解釋程式碼
這段代碼是一個 ASP.NET MVC 視圖文件,使用 Razor 語法來生成一個 HTML 頁面。它的功能是顯示一個產品列表,並且提供了一些操作和說明。以下是對這段代碼的詳細解釋:

  1. @model IEnumerable<WebApplication5.Models.Product>:

    • 這行代碼表示這個視圖與一個 IEnumerable<Product> 類型的模型相關聯。也就是說,視圖將接收一個 Product 對象的集合,並對每個產品進行渲染。
    • Product 是模型類,定義了產品的屬性。
  2. @{ ViewBag.Title = "Index"; }:

    • 這段代碼為視圖設置了標題,標題內容是 "Index"。這個值將傳遞給頁面的布局文件,通常用於設置 HTML 頁面的 <title> 標簽。
  3. <h2>Index</h2>:

    • 這是一個二級標題,顯示文字 "Index"。
  4. 操作鏈接:

    • @Html.ActionLink("Create New", "Create"):
      • 生成一個超鏈接,鏈接的文本是 "Create New",點擊時會觸發 Create 動作方法。
    • @Html.ActionLink("下載範本", "DownloadTemplate", "Home"):
      • 生成一個指向 Home 控制器中 DownloadTemplate 動作的超鏈接,鏈接的文本是 "下載範本"。
  5. 使用SOP的步驟說明:

    • 通過 <ol><li> 標簽,列出了下載模板和操作的詳細步驟說明。這段內容是給用戶操作時的指南。
  6. 表格結構:

    • <table class="table">:
      • 生成一個帶有 table 樣式類的表格。
    • 表頭部分 (<th>):
      • 每個 <th> 標簽是表頭,分別對應 "序號"、"編號"、"品名"、"單價"、"備註"。
      • @Html.DisplayNameFor(model => model.編號) 等代碼動態生成表頭名稱,基於模型屬性的名稱。
  7. 動態內容部分:

    • @foreach (var item in Model):
      • 循環遍歷傳遞給視圖的 Model(即產品列表),每個 item 表示一個產品。
    • @Html.DisplayFor(modelItem => item.編號):
      • 用於顯示每個產品的屬性值,比如 編號品名單價備註
      • counter 是一個計數器,顯示每一行的序號,初始值為 1,隨著每次循環遞增。
  8. 注釋的部分:

    • @**@ 之間的內容是注釋掉的,暫時不顯示這些操作鏈接。
    • 注釋的內容中包括三個操作鏈接:Edit(編輯)、Details(詳情)和 Delete(刪除),每個鏈接都根據產品的 編號 生成相應的操作。

總結來說,這個視圖的功能是生成一個產品列表表格,包含產品的 編號品名單價備註 等信息,並提供下載模板和其他操作的超鏈接。

這個解釋完畢之後再來說還有安裝新的原件的分頁功能~感覺比較順

大家明天見~


上一篇
工業風網站的首頁
下一篇
新增功能
系列文
asp.net可以變出那些功能30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言